home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / lisp / stk-3.0 / stk-3 / blt-for-STk-3.0 / dd-protocol.stk < prev    next >
Encoding:
Text File  |  1995-12-26  |  3.8 KB  |  108 lines

  1. ;;;; ----------------------------------------------------------------------
  2. ;;;;  PURPOSE:  drag&drop send routine for "XXX" data
  3. ;;;;
  4. ;;;;  Widgets that are to participate in drag&drop operations for
  5. ;;;;  "XXX" data should be registered as follows:
  6. ;;;;
  7. ;;;;      (blt_drag&drop .win 'source 'handler 'XXX 'dd-send-color)
  8. ;;;;      (blt_drag&drop .win 'target 'handler 'XXX 'my-color-handler)
  9. ;;;;
  10. ;;;;      (define (my-color-handler)
  11. ;;;;          (let ((data (hash-table-get DragDrop 'XXX ;;;;f)))
  12. ;;;;        (if data
  13. ;;;;           .
  14. ;;;;                   .  do something with $data
  15. ;;;;                  .
  16. ;;;;                )))
  17. ;;;; ORIGINAL AUTHOR:  Michael J. McLennan       Phone: (215)770-2842
  18. ;;;;                    AT&T Bell Laboratories   E-mail: aluxpo!mmc@att.com
  19. ;;;;
  20. ;;;; ----------------------------------------------------------------------
  21. ;;;;            Copyright (c) 1993  AT&T  All Rights Reserved
  22. ;;;; ======================================================================
  23.  
  24. ;;;;
  25. ;;;; rewritten for STk by Erick Gallesio [eg@unice.fr]
  26. ;;;;    Creation date:  7-Jul-1994 10:13
  27. ;;;; Last file update: 12-Jul-1994 11:41
  28.  
  29. (require "hash")
  30.  
  31. (define DragDrop (make-hash-table))
  32.  
  33. (define (make-drag&drop-label win . args)
  34.   (let* ((token-name (& win ".label")))
  35.     ;; If this window already exists, don't create it
  36.     (when (= (winfo 'exists token-name) 0)
  37.       (pack (label token-name)))
  38.     ;; Now configure it to the given arguments
  39.     (apply (string->widget token-name) 'configure args)))
  40.  
  41. ;;;; ----------------------------------------------------------------------
  42. ;;;; (dd-send-color <interp> <ddwin> <data>)
  43. ;;;;
  44. ;;;;   INPUTS
  45. ;;;;     <interp> = interpreter for target application
  46. ;;;;      <ddwin> = pathname for target drag&drop window
  47. ;;;;       <data> = data returned from -tokencmd
  48. ;;;;
  49. ;;;;   RETURNS
  50. ;;;;     ""
  51. ;;;;
  52. ;;;;   SIDE-EFFECTS
  53. ;;;;     Sends data to remote application DragDrop(color), and then
  54. ;;;;     invokes the "color" handler for the drag&drop target.
  55. ;;;; ----------------------------------------------------------------------
  56. (define (dd-send-color interp ddwin data)
  57.   (send interp `(begin
  58.           ;; Verify it is a color
  59.           (winfo 'rgb *root* ',data)
  60.           (hash-table-put! DragDrop 'color ',data)))
  61.   (send interp `(blt_drag&drop 'target ,ddwin 'handle 'color))
  62.   "")
  63.  
  64. ;;;; ----------------------------------------------------------------------
  65. ;;;; dd-send-number <interp> <ddwin> <data>
  66. ;;;;
  67. ;;;;   INPUTS
  68. ;;;;     <interp> = interpreter for target application
  69. ;;;;      <ddwin> = pathname for target drag&drop window
  70. ;;;;       <data> = data returned from -tokencmd
  71. ;;;;
  72. ;;;;   RETURNS
  73. ;;;;     ""
  74. ;;;;
  75. ;;;;   SIDE-EFFECTS
  76. ;;;;     Sends data to remote application DragDrop(number), and then
  77. ;;;;     invokes the "number" handler for the drag&drop target.
  78. ;;;; ----------------------------------------------------------------------
  79. (define (dd-send-number interp ddwin data)
  80.   (send interp `(let ((x (if (string? ,data) (string->number ,data) ,data)))
  81.           (unless (number? x)
  82.               (error "dd-send-number: nbad number: ~S." x))
  83.           (hash-table-put! DragDrop 'number x)))
  84.   (send interp `(blt_drag&drop 'target ,ddwin 'handle 'number))
  85.   "")
  86.  
  87. ;;;; ----------------------------------------------------------------------
  88. ;;;; (dd-send-text <interp> <ddwin> <data>)
  89. ;;;;
  90. ;;;;   INPUTS
  91. ;;;;     <interp> = interpreter for target application
  92. ;;;;      <ddwin> = pathname for target drag&drop window
  93. ;;;;       <data> = data returned from -tokencmd
  94. ;;;;
  95. ;;;;   RETURNS
  96. ;;;;     ""
  97. ;;;;
  98. ;;;;   SIDE-EFFECTS
  99. ;;;;     Sends data to remote application DragDrop(text), and then
  100. ;;;;     invokes the "text" handler for the drag&drop target.
  101. ;;;; ----------------------------------------------------------------------
  102. (define (dd-send-text interp ddwin data)
  103.   (send interp `(hash-table-put! DragDrop 'text ,data))
  104.   (send interp `(blt_drag&drop 'target ,ddwin 'handle 'text))
  105.   "")
  106.  
  107. (provide "dd-protocol")
  108.